<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        /* 
            []：中括号表示字符集合，匹配方括号中的任意字符 ，多选一
            {}：大括号，量词符，表示重复次数
                var reg = /^abc{3}$/    表示c重复3次
            (): 小括号表示优先级 
                var reg =  /^(abc){3}$/  表示abc重复3次

            | : 或者符号
                手机号正则：  /^1[3|4|5|7|8]\d{9}$/
         */
        // 量词符： 设定某个模式出现的次数
        //  * : 允许出现0次或多次  相当于 >=0
        var reg = /^a*$/
        console.log(reg.test(""));
        console.log(reg.test("a"));
        console.log(reg.test("aa"));
        console.log(reg.test("aaaaa"));
        console.log("------------------------1---------------------");
        //  + : 允许出现1次或多次  相当于 >=1
        var reg1 = /^a+$/
        console.log(reg1.test(""));
        console.log(reg1.test("a"));
        console.log(reg1.test("aa"));
        console.log(reg1.test("aaaaa"));
        console.log("---------------------2------------------------");
        //  ？ : 允许出现0次或1次  相当于 0 || 1
        var reg2 = /^a?$/
        console.log(reg2.test(""));
        console.log(reg2.test("a"));
        console.log(reg2.test("aa"));
        console.log(reg2.test("aaaaa"));
        console.log("---------------------3------------------------");
        //  {3} : a重复3次
        var reg3 = /^a{3}$/
        console.log(reg3.test(""));
        console.log(reg3.test("a"));
        console.log(reg3.test("aaa"));
        console.log(reg3.test("aaaaa"));
        console.log("---------------------4------------------------");
        //  {3, } : >=3 次
        var reg4 = /^a{3,}$/
        console.log(reg4.test(""));
        console.log(reg4.test("a"));
        console.log(reg4.test("aaa"));
        console.log(reg4.test("aaaaa"));
        console.log("---------------------5------------------------");
        //  {3,5} : >=3    <=5次
        var reg5 = /^a{3,5}$/
        console.log(reg5.test(""));
        console.log(reg5.test("a"));
        console.log(reg5.test("aaa"));
        console.log(reg5.test("aaaaa"));
        console.log(reg5.test("aaaaaa"));
        console.log("---------------------6------------------------");
        // 重复模式  [a-zA-Z0-9_-]
        var reg6 = /^[a-zA-Z0-9_-]{6,16}$/
        console.log(reg6.test("ab2_"));
        console.log(reg6.test("98989a"));
        console.log(reg6.test("hover_190axY"));
        console.log(reg6.test("hover_19!0axY"));
        console.log("---------------------7------------------------");
        /* 
            预定义类：
                \d ： 表示 [0-9]   \D: 表示 [^0-9] 取反
                \w:  表示 [A-Za-z0-9_]     \W:  表示 [^A-Za-z0-9_]
                \s: 匹配空格（包括换行符，制表符，空格符等） [\t\r\n\v\f]   \S: 匹配非空格符  [^\t\r\n\v\f]
         */
        var reg7 = /^\d$/
        console.log(reg7.test(123));
        console.log(reg7.test(1));
        console.log("---------------------8------------------------");
        /* 
            正则替换
                g 全局替换， i 忽略大小写
         */
        var name = 'jack ni sdfk islajo Sdfs'
        var res = name.replace(/s/, '&') // 只替换第一个
        console.log(res);
        var res = name.replace(/s/gi, '&') // 替换所有，并忽略大小写
        console.log(res);
        var res = name.replace(/s/g, '&') // 替换所有 
        console.log(res);
    </script>
</body>

</html>